package org.example;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class LsOutputParser {

    public static List<FileInfo> parseLsOutput(List<String> lsOutput) throws ParseException {
        List<FileInfo> fileInfoList = new ArrayList<>();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");

        for (String line : lsOutput) {
            // 拆分字符串成字段
            String[] parts = line.split("\\s+");
            if (parts.length < 8) continue; // 确保有足够的字段

            // 解析文件类型
            boolean isDirectory = line.startsWith("d");

            // 获取文件大小
            String fileSize = line.substring(30, 34).trim();

            // 获取最后修改时间（组合第6和第7列为完整的时间戳）
            String lastModifiedStr = line.substring(35, 51);
            Date lastModified = dateFormat.parse(lastModifiedStr);

            // 获取文件名（文件名从第8列开始，包含特殊情况下文件名中可能有空格）
            String fileName = line.substring(52);

            // 创建 FileInfo 对象
            FileInfo fileInfo = new FileInfo(fileName, isDirectory, fileSize, lastModified);
            fileInfo.setLastModifiedStr(lastModifiedStr);

            fileInfoList.add(fileInfo);
        }

        return fileInfoList;
    }
}
